#pragma once
#include <list>
#include <mutex>        //互斥量
#include <shared_mutex> //读写锁
#include <map>
#include "publicstruct.h"
using namespace std;

// 在线用户链表  饿汉单例 线程安全
class OnlineUser
{
private:
    OnlineUser();

public:
    ~OnlineUser();
    // 获取实例
    static OnlineUser *getInstance()
    {
        return globalInstance;
    }
    // 添加在线用户
    void addOnlineUser(struct st_onlineUser user);
    // 删除在线用户
    void deleteOnlineUser(int uid);
    // 判断用户是否在线,在线返回bev
    struct bufferevent *judgeUserOnline(int uid);

private:
    static OnlineUser *globalInstance; // 全局唯一实例
    list<st_onlineUser> online_user;   // 在线用户链表
    mutex m_mutex;                     // 互斥量
};